iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
自我挑戰組

gRPC通訊框架認識與實作系列 第 8

gRPC通訊框架認識與實作【Day 08】

  • 分享至 

  • xImage
  •  

今天要開始實作server端口,server端口分成兩個部分,建立端口資訊跟接收端口。
首先,我們先實作端口資訊的部分,使用我們前天製作的gRPC_Server,如果忘記可以回頭去看這裡,將原本的入口點刪掉,改成新增一個資料夾server,並且新增一個method,叫gRPCService,並重新設定好主程式入口
端口資訊主要有四個部分,

    public static void main(String[] args) throws IOException, InterruptedException {
        //設定port號
        ServerBuilder serverBuilder = ServerBuilder.forPort(5000);
        //發布Impl的服務器
        serverBuilder.addService("這邊放置我們的實作連線");
        //建立服務器
        Server server = serverBuilder.build();
        //啟用服務器
        server.start();
        server.awaitTermination();

    }

第一行是先設定好我們要連線的port號,這邊設定為5000 port
第二行要發布我們的接收端口,等一下會實作這個,先空著等等回來填
第三行要建立一個server對象,讓我們的server可以被正常的啟動起來
最後加上兩個method,啟用服務器,讓我們的服務器可以順利被啟動起來,這樣就完成我們的端口資訊。

接下來製作接收端口,在同一個資料夾底下新增IronManServiceImpl。
基本上的命名慣例都是這樣:XXXImpl,當然你要給它特別的名稱也可以,只是大部分人都這樣寫,我們就從善如流。
在class內點選generante,選擇override method,選擇我們要override的對象ironMan01這個method。
這個部分之前已經在.proto檔中的IronManService設定過了,如果忘記的話可以看這裡

server的部份我們寫上:

    public void ironMan01(IronManProto.IronManRequest01 request, StreamObserver<IronManProto.IronManResponse01> responseObserver) {
        //接收來自client端的參數
        String name = request.getName();
        String age = request.getAge();
        System.out.println("Server接收到的數據: name:" + name + ", age:" + age);

        //提供server端返回值
        //建立回傳
        IronManProto.IronManResponse01.Builder builder = IronManProto.IronManResponse01.newBuilder();
        //放入回傳值
        builder.setResult("我是server端,接收到數據:" + name +" 以及 " + age + " -> 返回response");
        //將回傳值封裝
        IronManProto.IronManResponse01 ironManResponse01 = builder.build();

        //回傳給Client
        responseObserver.onNext(ironManResponse01);
        responseObserver.onCompleted();;
    }

一開始我們先定義好接收的request,並且將值印出來。
然後我們要建立response,建立一個builder當作response,並且設定好回傳值的內容,再將回傳值封裝。
最後我們調用responseObserver.onNext()這個method將值回傳給client,再使用responseObserver.onCompleted()回傳一個標記給client,代表我們的回傳已經結束。
最後,還記得前面的端口資訊有一個地方還沒寫嗎? 所以我們補上:

serverBuilder.addService(new IronManServiceImpl());

到這邊為止,我們就已經完成server端的實作了,明天我們會說明responseObserver這個method的內容。


上一篇
gRPC通訊框架認識與實作【Day 07】
下一篇
gRPC通訊框架認識與實作【Day 09】
系列文
gRPC通訊框架認識與實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言